- (GdkWindow *)gdkWindow;
@end
-static GdkDragContext *
+GdkDragContext *
gtk_drag_begin_internal (GtkWidget *widget,
- GtkDragSourceSite *site,
+ GtkIconHelper *icon_helper,
GtkTargetList *target_list,
GdkDragAction actions,
gint button,
*/
if (!info->icon_surface)
{
- if (!site || site->icon_type == GTK_IMAGE_EMPTY)
+ if (!icon_helper || _gtk_icon_helper_get_is_empty (icon_helper))
gtk_drag_set_icon_default (context);
else
{
- switch (site->icon_type)
+ switch (_gtk_icon_helper_get_storage_type (icon_helper))
{
case GTK_IMAGE_PIXBUF:
gtk_drag_set_icon_pixbuf (context,
- site->icon_data.pixbuf.pixbuf,
+ _gtk_icon_helper_peek_pixbuf (icon_helper),
-2, -2);
break;
case GTK_IMAGE_STOCK:
gtk_drag_set_icon_stock (context,
- site->icon_data.stock.stock_id,
+ _gtk_icon_helper_get_stock_id (icon_helper),
-2, -2);
break;
case GTK_IMAGE_ICON_NAME:
gtk_drag_set_icon_name (context,
- site->icon_data.name.icon_name,
+ _gtk_icon_helper_get_icon_name (icon_helper),
-2, -2);
break;
case GTK_IMAGE_EMPTY:
* Source side *
***************/
-static GtkIconHelper *
-gtk_drag_source_site_get_icon_helper (GtkDragSourceSite *site)
-{
- GtkIconHelper *helper;
-
- if (site)
- helper = g_object_ref (site->icon_helper);
- else
- helper = _gtk_icon_helper_new ();
-
- if (_gtk_icon_helper_get_is_empty (helper))
- _gtk_icon_helper_set_icon_name (helper, "text-x-generic", GTK_ICON_SIZE_DND);
-
- return helper;
-}
-
-/* Like gtk_drag_begin(), but also takes a GtkDragSourceSite,
+/* Like gtk_drag_begin(), but also takes a GtkIconHelper
* so that we can set the icon from the source site information
*/
static GdkDragContext *
gtk_drag_begin_internal (GtkWidget *widget,
- GtkDragSourceSite *site,
+ GtkIconHelper *icon_helper,
GtkTargetList *target_list,
GdkDragAction actions,
gint button,
*/
if (!info->icon_window && !info->icon_helper)
{
- info->icon_helper = gtk_drag_source_site_get_icon_helper (site);
+ if (icon_helper)
+ info->icon_helper = g_object_ref (icon_helper);
+ else
+ info->icon_helper = _gtk_icon_helper_new ();
+
+ if (_gtk_icon_helper_get_is_empty (info->icon_helper))
+ _gtk_icon_helper_set_icon_name (info->icon_helper, "text-x-generic", GTK_ICON_SIZE_DND);
+
set_icon_helper (info->context, info->icon_helper, 0, 0, FALSE);
}
button = gtk_gesture_single_get_current_button (GTK_GESTURE_SINGLE (site->drag_gesture));
gtk_event_controller_reset (GTK_EVENT_CONTROLLER (site->drag_gesture));
- gtk_drag_begin_internal (widget, site, site->target_list,
+ gtk_drag_begin_internal (widget, site->icon_helper, site->target_list,
site->actions, button, last_event,
start_x, start_y);
return TRUE;